#pragma once

//TODO adjust namespaces 

#include <string>
#include <map>

namespace MathematicaTranslator {

	/** 
	  *  Driver that controlls scanner and parser.
	  *  Specifies debugging flags, stream to parse end error function signature
	  */
	class MTDriver {

		public:
			MTDriver();
			virtual ~MTDriver();

			std::string streamname;

			/// Debug scanner
			bool traceScanning;
			/// Debug parser
			bool traceParsing;

			int parse_stream(std::istream& in,
		      const std::string& sname);
			
			int parse_string(const std::string& input,
		      const std::string& sname);
			
			int parse_file(const std::string& filename);

			void error(const class location& l, const std::string& m);
			void error(const std::string& m);

			class Scanner* scanner;

	};
}
